#ifndef MVFCPP_H
#define MVFCPP_H

#include <vector>
#include <string>
class mvfcpp {
public:
//double sqr (double x );
//double dmax (int n ,double * x );
//double sgn (double x );
//double dist2 (int n ,double * x ,double * y );
//double distInf (int n ,double * x ,double * y );
//double prod (int n ,double * x );
//
static double mvfAckley (int n ,const std::vector<double> & x );
static double mvfBeale (int n ,const std::vector<double> & x );
static double mvfBohachevsky1 (int n ,const std::vector<double> & x );
static double mvfBohachevsky2 (int n ,const std::vector<double> & x );
static double mvfBooth (int n ,const std::vector<double> & x );
static double mvfBoxBetts (int n, const std::vector<double> & x );
static double mvfBranin (int n, const std::vector<double> & x);
static double mvfBranin2 (int n, const std::vector<double> & x);
static double mvfCamel3 (int n ,const std::vector<double> & x);
static double mvfCamel6 (int n ,const std::vector<double> & x);
static double mvfChichinadze (int n ,const std::vector<double> & x);
static double mvfCola (int n ,const std::vector<double> & x);
static double mvfColville (int n ,const std::vector<double> & x);
static double mvfCorana (int n ,const std::vector<double> & x);
static double mvfEasom (int n ,const std::vector<double> & x);
static double mvfEggholder (int n ,const std::vector<double> & x);
static double mvfExp2 (int n ,const std::vector<double> & x);
static double mvfFraudensteinRoth (int n ,const std::vector<double> & x);
static double mvfGear (int n, const std::vector<double> & x);
static double mvfGeneralizedRosenbrock (int n ,const std::vector<double> & x);
static double mvfGoldsteinPrice (int n ,const std::vector<double> & x);
static double mvfGriewank (int n ,const std::vector<double> & x);
static double mvfHansen (int n ,const std::vector<double> & x);
static double mvfHartman3 (int n ,const std::vector<double> & x);
static double mvfHartman6 (int n ,const std::vector<double> & x);
static double mvfHimmelblau (int n ,const std::vector<double> & x);
static double mvfHolzman1 (int n ,const std::vector<double> & x);
static double mvfHolzman2 (int n ,const std::vector<double> & x);
static double mvfHosaki (int n ,const std::vector<double> & x);
static double mvfHyperellipsoid (int n ,const std::vector<double> & x);
static double mvfKatsuuras (int n ,const std::vector<double> & x);
static double mvfKowalik (int n ,const std::vector<double> & x);
static double mvfLangerman (int n ,const std::vector<double> & x);
static double mvfLennardJones (int n ,const std::vector<double> & x);
static double mvfLeon(int n, const std::vector<double> & x);
static double mvfLevy (int n ,const std::vector<double> & x);
static double mvfMatyas (int n ,const std::vector<double> & x);
static double mvfMaxmod(int n,const std::vector<double> & x);
static double mvfMcCormick (int n ,const std::vector<double> & x);
static double mvfMichalewitz (int n ,const std::vector<double> & x);
static double mvfMultimod(int n, const std::vector<double> & x);
//void setNeumaierPerm (double beta );
//void setNeumaierPerm0 (double beta );
static double mvfNeumaierPerm (int n, const std::vector<double> & x );
//static double mvfNeumaierPerm0 (int n, std::vector<double> & x );//valgrind
static double mvfNeumaierPowersum (int n, const std::vector<double> & x );
static double mvfNeumaierTrid (int n, const std::vector<double> & x );
static double mvfOddsquare (int n ,const std::vector<double> & x );
static double mvfPaviani (int n ,const std::vector<double> & x );
static double mvfPlateau (int n ,const std::vector<double> & x );
static double mvfPowell (int n ,const std::vector<double> & x );
//static double mvfQuarticNoiseU (int n ,std::vector<double> & x);
//static double mvfQuarticNoiseZ (int n ,std::vector<double> & x);
static double mvfRana (int n ,const std::vector<double> & x );
static double mvfRastrigin (int n ,const std::vector<double> & x );
static double mvfRastrigin2 (int n ,const std::vector<double> & x );
static double mvfRosenbrock (int n ,const std::vector<double> & x );
static double mvfSchaffer1 (int n ,const std::vector<double> & x );
static double mvfSchaffer2 (int n ,const std::vector<double> & x );
static double mvfSchwefel1_2 (int n ,const std::vector<double> & x);
static double mvfSchwefel2_21 (int n ,const std::vector<double> & x);
static double mvfSchwefel2_22 (int n ,const std::vector<double> & x );
static double mvfSchwefel2_26 (int n ,const std::vector<double> & x );
static double mvfShekel2 (int n ,const std::vector<double> & x);
static double mvfShekelSub4 (int m ,const std::vector<double> & x);
static double mvfShekel4_5 (int n ,const std::vector<double> & x );
static double mvfShekel4_7 (int n ,const std::vector<double> & x );
static double mvfShekel4_10 (int n ,const std::vector<double> & x );
static double mvfShekel10 (int n ,const std::vector<double> & x);
static double mvfShubert (int n ,const std::vector<double> & x );
static double mvfShubert2 (int n ,const std::vector<double> & x );
static double mvfShubert3 (int n ,const std::vector<double> & x);
static double mvfSphere (int n ,const std::vector<double> & x);
static double mvfSphere2(int n, const std::vector<double> & x );
static double mvfStep (int n ,const std::vector<double> & x);
static double mvfStretchedV (int n ,const std::vector<double> & x );
static double mvfSumSquares (int n ,const std::vector<double> & x );
static double mvfTrecanni (int n ,const std::vector<double> & x);
static double mvfTrefethen4 (int n ,const std::vector<double> & x );
static double mvfWatson(int n, const std::vector<double> & x);
static double mvfXor (int n, const std::vector<double> & x);
static double mvfZettl(int n, const std::vector<double> & x);
//
//double _Zh1 (double * x );
//double _Zh2 (double * x );
//double _Zh3 (double * x );
//double _Zp (double x );
static double mvfZimmerman (int n ,const std::vector<double> & x );
};
#endif

